package com.liu.tools;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @DateTime 2014年11月28日 下午2:36:11
 * @Company 华视传媒
 * @Author 刘兴密
 * @QQ 63972012
 * @Desc 华视传媒字符串处理工具
 */
public class StrUtil {

	private static Logger log = LoggerFactory.getLogger(StrUtil.class);

	/**
	 * @DateTime 2014年11月28日 上午10:47:08
	 * @Author 刘兴密
	 * @QQ 63972012
	 * @Desc 验证空字符串
	 * @param str
	 * @return boolean
	 */
	public static boolean isNull(String str) {
		return str == null || "".trim().equals(str);
	}
	
	public static boolean isNull(String... args) {
	
		boolean flag = false;
		
		for (String str : args) {
			flag = (str == null || "".equals(str));
			if(flag){
				return flag;
			}
		}
		
		return flag;
		
		
	}

	/**
	 * @DateTime 2014年11月28日 上午10:48:03
	 * @Author 刘兴密
	 * @QQ 63972012
	 * @Desc 验证字符串非空
	 * @param str
	 * @return boolean
	 */
	public static boolean isNotNull(String str) {
		return str != null && !"".equals(str);
	}

	/**
	 * @DateTime 2014年12月10日 上午9:53:33
	 * @Author 刘兴密
	 * @QQ 63972012
	 * @Desc 把字符串转换成整型，失败返回0
	 * @param param
	 * @return int
	 */
	public static int String2Int(String param) {
		if (isNull(param)) {
			log.error("Failed convert String to int,param is null.");
			return 0;
		}
		try {
			return Integer.parseInt(param);
		} catch (Exception e) {
			log.error("Failed conver String to int,param=" + param, e);
		}
		return 0;
	}

	/**
	 * @DateTime 2014年12月10日 上午9:54:56
	 * @Author 刘兴密
	 * @QQ 63972012
	 * @Desc 把字符串转换成整型，失败返回默认值
	 * @param param
	 * @param defaultvalue
	 * @return int
	 */
	public static int String2Int(String param, int defaultvalue) {
		if (isNull(param)) {
			log.error("Failed convert String to int,param is null.");
			return defaultvalue;
		}
		try {
			return Integer.parseInt(param);
		} catch (Exception e) {
			log.error("Failed conver String to int,param=" + param, e);
		}
		return defaultvalue;
	}

	/**
	 * @DateTime 2015年1月28日 下午2:45:51
	 * @Author 刘兴密
	 * @QQ 63972012
	 * @Desc 转码
	 * @param s
	 * @return String
	 */
	public static String encodeHTML(String s) {
		if (isNotNull(s)) {
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < s.length(); i++) {
				char ch = s.charAt(i);
				switch (ch) {
				case '<':
					sb.append("&lt;");
					break;
				case '>':
					sb.append("&gt;");
					break;
				case '"':
					sb.append("&quot;");
					break;
				case '\'':
					sb.append("&#39;");
					break;
				default:
					sb.append(ch);
				}
			}
			return sb.toString();
		} else {
			return "";
		}
	}

	/**
	 * @DateTime 2015年1月28日 下午2:45:51
	 * @Author 刘兴密
	 * @QQ 63972012
	 * @Desc 转码
	 * @param s
	 * @return String
	 */
	public static String encodeHTML2(String s) {
		if (isNotNull(s)) {
			StringBuilder sb = new StringBuilder();
			for (int i = 0; i < s.length(); i++) {
				char ch = s.charAt(i);
				switch (ch) {
				case '&':
					sb.append("&amp;");
					break;
				case '<':
					sb.append("&lt;");
					break;
				case '>':
					sb.append("&gt;");
					break;
				case '"':
					sb.append("&quot;");
					break;
				case '\'':
					sb.append("&#39;");
					break;
				default:
					sb.append(ch);
				}
			}
			return sb.toString();
		} else {
			return "";
		}
	}

	public static String makeUrl(String domain, String fileName){
		
		try {
			return domain + "/" + URLEncoder.encode(fileName, "utf-8");
		} catch (UnsupportedEncodingException e) {
			return domain + "/" + fileName;
		}
		
	}

	public static String reverse(String str){
		return new StringBuilder(str).reverse().toString();
	}
}
